# 异常处理

# 六大常见的异常

# 除零异常ZeroDivisionError
# 10 / 0

# 名称错误NameError
# print(a)

# 类型错误TypeError
# 10 + "1"

# 数值错误ValueError
# int("abc")

# 索引错误IndexError
list1 = [1, 2, 3]
print(list1[1])
# print(list1[3])

# 属性错误AttributeError
# list1.add("x")

# 处理异常
"""
Java
try{

}catch 异常{

}finally{

}

Python:

try:
....可能会发生异常的代码
....可能会发生异常的代码
....可能会发生异常的代码
except 除零异常:
....如果发生了除零异常该怎么办
except 索引异常:
....如果发生了索引异常该怎么办
else:
....没有发生任何异常才会执行
finally:
....不管有没有发生异常都会执行
"""

try:
    # 10 / 0
    # 只要发生了异常 try中的后面的代码将会跳过
    # print(a)
    print("helloWorld")
except ZeroDivisionError:
    print("捕获到了除零异常")
except NameError:
    print("捕获到了名称异常")
else:
    print("没有发生异常")
finally:
    print("不管有没有发生异常都会执行")


# 自定义一个异常类
class AgeError(Exception):
    pass


age = -1
try:
    if age < 0 or age > 200:
        # print("外星人")
        # 抛出AgeError
        raise AgeError
    elif age >= 18:
        print("成年")
    else:
        print("未成年")
except AgeError:
    print("捕获到了AgeError")
